package main

import (
	"fmt"
	"mongo/library/mongo"
	"mongo/models"
)

type User struct {
	Name     string `bson:"name" json:"name"`
	Password string `bson:"password" json:"password"`
}

// 激活码信息
type ActiveCode struct {
	ID          string `json:"id,omitempty"        bson:"_id,omitempty"`
	Code        string `json:"code"                bson:"code"`
	PartitionId int    `json:"partition_id,string" bson:"partition_id"`
	Actived     bool   `json:"actived"             bson:"actived"`
	StartTime   int64  `json:"start_time" bson:"start_time"` // 准入时间
	EndTime     int64  `json:"end_time" bson:"end_time"`     // 截至时间
}

const ACTIVE_CODE_LIST_COLLECTION_NAME = "active_code_list"

func main() {
	defer func() {
		if r := recover(); r != nil {
			fmt.Println("程序发生异常:", r)
		}
	}()

	// ctx := context.Background()
	// // 连接数据库
	// client, err := qmgo.NewClient(ctx, &qmgo.Config{
	// 	Uri: "mongodb://root:MTAE379673%23@10.96.8.40:27017",
	// })
	// if err != nil {
	// 	fmt.Println("连接失败,err=" + err.Error())
	// 	return
	// }
	// collection := client.Database("test").Collection("user")

	// //插入一条数据
	// user := &User{Name: "Jack", Password: "123456"}
	// resutl1, err := collection.InsertOne(ctx, user)
	// if err != nil {
	// 	fmt.Println("添加数据失败,err=" + err.Error())
	// 	return
	// }
	// fmt.Println("插入一条数据：")
	// fmt.Println(resutl1)

	// //查询数据
	// one := User{}
	// err = collection.Find(ctx, bson.M{"name": user.Name}).One(&one)
	// fmt.Println("查询结果:")
	// fmt.Println(one)

	// //插入多条数据
	// var users = []User{
	// 	User{Name: "a1", Password: "123"},
	// 	User{Name: "a2", Password: "123"},
	// 	User{Name: "a3", Password: "123"},
	// 	User{Name: "a4", Password: "123"},
	// 	User{Name: "a5", Password: "123"},
	// 	User{Name: "a6", Password: "123"},
	// }
	// result2, err := collection.InsertMany(ctx, users)
	// fmt.Println("插入多条数据：")
	// fmt.Println(result2)

	// //更新数据
	// err = collection.UpdateOne(ctx, bson.M{"name": "a2"}, bson.M{"$set": bson.M{"password": "654321"}})
	// if err != nil {
	// 	fmt.Println("更新数据失败,err=" + err.Error())
	// 	return
	// }

	// //删除数据
	// err = collection.Remove(ctx, bson.M{"name": "a6"})
	// if err != nil {
	// 	fmt.Println("删除数据失败,err=" + err.Error())
	// 	return
	// }

	var url = "mongodb://root:MTAE379673%23@10.96.8.100:27017"
	var database = "quanta_admin"
	mongo.SetConfig(url, database)

	// user := User{}
	// err := mongo.Find("user", bson.M{"name": "Jack"}).One(&user)
	// if err != nil {
	// 	fmt.Println("查找失败,err=", err.Error())
	// 	return
	// }
	// fmt.Println("单条查询:")
	// fmt.Println(user)

	// users := make([]*User, 0)
	// err = mongo.Find("user", nil).All(&users)
	// if err != nil {
	// 	fmt.Println("查找失败,err=", err.Error())
	// 	return
	// }
	// fmt.Println("多条查询:")
	// for i := 0; i < len(users); i++ {
	// 	fmt.Println(users[i])
	// }

	// 激活码
	// //查询激活码数量
	// activeCodeCount, err := models.GetActiveCodeTotal(bson.M{})
	// if err == nil {
	// 	fmt.Println("GetActiveCodeTotal activeCodeCount=", activeCodeCount)
	// } else {
	// 	fmt.Println("GetActiveCodeTotal err=", err.Error())
	// }

	// //查询激活码(所有)
	// allActiveCodes, err := models.GetActiveCodeList()
	// if err == nil {
	// 	for i := 0; i < len(allActiveCodes); i++ {
	// 		fmt.Printf("GetActiveCodeList i=%v data=%v \n", i, allActiveCodes[i])
	// 	}
	// } else {
	// 	fmt.Println("GetActiveCodeList err=", err.Error())
	// }

	// //查询激活码(分页)
	// pageActiveCodes, err := models.GetActiveCodeByPage(5, 2, bson.M{})
	// if err == nil {
	// 	for i := 0; i < len(pageActiveCodes); i++ {
	// 		fmt.Printf("GetActiveCodeByPage i=%v data=%v \n", i, pageActiveCodes[i])
	// 	}
	// } else {
	// 	fmt.Println("GetActiveCodeByPage err=", err.Error())
	// }

	// //插入激活码
	// err := models.InsertActiveCode(10, "123131", 0, 0)
	// if err == nil {
	// 	fmt.Println("InsertActiveCode success")
	// } else {
	// 	fmt.Println("GetActiveCodeByPage err=", err.Error())
	// }

	// //查询激活码
	// code, err := models.ActiveCodeGet("65114befa27ed305e8464a27")
	// if err == nil {
	// 	fmt.Println("ActiveCodeGet code=", code)
	// } else {
	// 	fmt.Println("ActiveCodeGet err=", err.Error())
	// }

	fmt.Println(fmt.Sprintf("collection is nil(coll_name=%s)", "12323"))
	//删除激活码
	err := models.ActiveCodeDel("652cab16b4aeaf879b94d75c")
	if err == nil {
		fmt.Println("ActiveCodeDel success")
	} else {
		fmt.Println("ActiveCodeGet err=", err.Error())
	}

	// //判断激活码存在
	// count, err := models.ActiveCodeExist("CrO7Kl")
	// if err == nil {
	// 	fmt.Println("ActiveCodeExist count=", count)
	// } else {
	// 	fmt.Println("ActiveCodeExist err=", err.Error())
	// }

	// //更新数据(object_id)
	// err = models.UpDateActiveCode("65114befa27ed305e8464a27", "123")
	// if err == nil {
	// 	fmt.Println("UpDateActiveCode success")
	// } else {
	// 	fmt.Println("UpDateActiveCode err=", err.Error())
	// }
}
